#ifndef TASKWORKER_H
#define TASKWORKER_H

#include <QUdpSocket>
#include <QTimer>
/**
 * @brief 采用方式二，实现线程任务
 */
class TaskWorker : public QObject {
  Q_OBJECT
public:
  TaskWorker();

public slots:

  /**
   * @brief 将线程中要执行的内容写在槽函数中
   */
  void init(const QString &ip, quint16 port); // 初始化
  void onSend(const QString &data); // 发送
  void onClose();                                  // 关闭套接字
  void onReadyRead();
signals:
  /**
   * @brief 因为子线程不能更新界面，利用该信号将信息传递到主线程进行显示。
   */
  void showMessage(const QString &info);

private:
  // 只能定义指针，在子线程中创建UdpSocket 对象,不然在子线程中收发消息会出错。
  QUdpSocket *m_udp = nullptr;
    QHostAddress m_serverAddr;
    quint16 m_port;
    QTimer *m_timer; ///< 心跳定时器
};

#endif // TCPSOCKET_H
